home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / utils / axval / axval.c next >
Encoding:
C/C++ Source or Header  |  1992-12-26  |  6.8 KB  |  367 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <exec/exec.h>
  4. #include <exec/types.h>
  5. #include "dh0:code/code20/defines.h"
  6. #define ACCESS_READ -2
  7. struct Commands cmds;
  8. char BBSLoc[200];
  9. char Temp[200];
  10. int nodes=0;
  11. void sr(char *str);
  12. void BBS(void);
  13. void Configs();
  14. void CheckUlPaths(char *str);
  15. void CheckPaths(char *str);
  16. void CheckNeeded(char *str);
  17. int Ndirs(char *str);
  18. void CheckConfig(char *str,int node);
  19. void CheckNode(char *str);
  20. void Nodes(void);
  21. int TLock(char *str);
  22. BOOL WAit=FALSE;
  23. char WAitStr[256];
  24. int end(int nothing);
  25. int end(int nothing)
  26. {
  27.   if(WAit)
  28.   {
  29.     printf("Press RETURN to continue\n");
  30.     gets(WAitStr);
  31.   }
  32.   exit(0);
  33. }
  34. main(int argc,char *argv[])
  35. {
  36.    FILE *fi;
  37.    if(argc<3 || argc>4)
  38.    {
  39.      printf("AX Validation v1.1 written by ByteMaster\n");
  40.      printf("This is an AmiExpress 1.1w+ utility\n");
  41.      printf("Usage: AXVal <bbs location> <nodes> [WAit]\n");
  42.      printf("   ie: AXVal BBS: 9 WAit\n");
  43.      printf("\n");
  44.      end(0);
  45.    }
  46.    if(argc==4) WAit=TRUE;
  47.    printf("AX Validation v1.0 written by Joseph Hodge\n");
  48.    strcpy(BBSLoc,argv[1]); sr(BBSLoc); strupr(BBSLoc);
  49.    nodes=atoi(argv[2]);
  50.    BBS();
  51.    Configs();
  52.    Nodes();
  53.    printf("\n\nBBS structure appears to be intact!\n\n");
  54.    
  55.    end(0);
  56. }
  57.  
  58. void BBS(void)
  59. {
  60.   char t[200];
  61.   printf("-> Searching for BBS Location\n");
  62.   if(!TLock(BBSLoc))
  63.   {
  64.     printf("Error! Can't locate BBS location %s\n",BBSLoc);
  65.     end(0);
  66.   }
  67.   printf("\n");
  68.   sprintf(t,"%sZoom",BBSLoc);
  69.   if(!TLock(t))
  70.   {
  71.     printf("    Error! Can't locate %s\n",t);
  72.     end(0);
  73.   }
  74.   sprintf(t,"%sScreens",BBSLoc);
  75.   if(!TLock(t))
  76.   {
  77.     printf("    WARNING! Can't locate %s\n",t);
  78.   }
  79.   sprintf(t,"%sScreens/BullBatch",BBSLoc);
  80.   if(!TLock(t))
  81.   {
  82.     printf("    WARNING! Can't locate %s\n",t);
  83.   }
  84.   sprintf(t,"%sCommands",BBSLoc);
  85.   if(!TLock(t))
  86.   {
  87.     printf("    WARNING! Can't locate %s\n",t);
  88.   }
  89.   sprintf(t,"%sUser.Data",BBSLoc);
  90.   if(!TLock(t))
  91.   {
  92.     printf("SERIOUS WARNING! can't locate %s\n",t);
  93.   }
  94.     sprintf(t,"%sUser.Keys",BBSLoc);
  95.   if(!TLock(t))
  96.   {
  97.     printf("SERIOUS WARNING! can't locate %s\n",t);
  98.   }
  99.   
  100. }
  101. void Nodes(void)
  102. {
  103.   char t[200];
  104.   register int i=0;
  105.   printf("--> Scanning for node directories\n");
  106.   while(i<nodes)
  107.   {
  108.     sprintf(t,"%sNode%d",BBSLoc,i);
  109.     if(!TLock(t))
  110.     {
  111.       printf("    Error! Can't locate %s\n",t);
  112.     }
  113.     else
  114.     {
  115.       CheckNode(t);
  116.     }
  117.     i++;
  118.   }
  119.   printf("\n");
  120. }
  121. void CheckNode(char *str)
  122. {
  123.   char t[200];
  124.   sprintf(t,"%s/Work",str);
  125.   if(!TLock(t))
  126.   {
  127.     printf("Error! Can't locate %s\n",t);
  128.     end(0);
  129.   }
  130.   sprintf(t,"%s/PlayPen",str);
  131.   if(!TLock(t))
  132.   {
  133.     printf("Error! Can't locate %s\n",t);
  134.     end(0);
  135.   }
  136.     sprintf(t,"%s/Screens",str);
  137.   if(!TLock(t))
  138.   {
  139.     printf("WARNING! Can't locate %s\n",t);
  140.   }
  141.     sprintf(t,"%s/Screens/BullBatch",str);
  142.   if(!TLock(t))
  143.   {
  144.     printf("WARNING! Can't locate %s\n",t);
  145.   }
  146.    sprintf(t,"%s/ComputerList",str);
  147.   if(!TLock(t))
  148.   {
  149.     printf("Error! Can't locate %s\n",t);
  150.     end(0);
  151.   }
  152.  
  153. }
  154. void Configs()
  155. {
  156.   register int i=0;
  157.   printf("-> Searching for Config files\n");
  158.   while(i<nodes)
  159.   {
  160.     sprintf(Temp,"%sconfig%d",BBSLoc,i);
  161.     if(!TLock(Temp))
  162.     {
  163.       printf("   Can't locate %s\n",Temp);
  164.       end(0);
  165.     }
  166.     else CheckConfig(Temp,i);
  167.     i++;
  168.   }
  169.   printf("\n");
  170. }
  171.  
  172. void CheckConfig(char *str,int node)
  173. {
  174.   FILE *fi;
  175.   char Temp1[200];
  176.   register int i=0;
  177.   printf("--> Checking Config%d Conferences\n",node);
  178.   fi=fopen(str,"rb");
  179.   if(fi==NULL)
  180.   {
  181.     printf("    Can't open Config%d\n",node);
  182.     end(0);
  183.   }
  184.   fread((APTR)&cmds,sizeof(struct Commands),1,fi);
  185.   fclose(fi);
  186.   strcpy(Temp1,cmds.BBSLoc);
  187.   strupr(Temp1); sr(Temp1);
  188.   if(strcmp(BBSLoc,Temp1))
  189.   {
  190.     printf("    Config%d has invalid BBS Location\n",node);
  191.     end(0);
  192.   }
  193.   while(i<9)
  194.   {
  195.     if(cmds.ConfLoc[i][0]!='\0')
  196.     {
  197.     printf("    Checking Conference #%d - %s\n",i+1,cmds.ConfName[i]);
  198.     if(!TLock(&cmds.ConfLoc[i]))
  199.     {
  200.       printf("    Error! Can't locate conference %d directory %s\n",i,cmds.ConfName[i]);
  201.       end(0);
  202.     }
  203.     else
  204.     {
  205.        CheckNeeded(&cmds.ConfLoc[i]);
  206.        if(Ndirs(&cmds.ConfLoc[i]))
  207.        {CheckPaths(&cmds.ConfLoc[i]);
  208.         CheckUlPaths(&cmds.ConfLoc[i]);}
  209.     }
  210.     }
  211.     i++;
  212.   }
  213. }
  214. int Ndirs(char *str)
  215. {
  216.   char t[200];
  217.   FILE *fi;
  218.   register int i;
  219.   register int j;
  220.   sprintf(t,"%sndirs",str);
  221.   if(TLock(t))
  222.   {
  223.      fi=fopen(t,"r");
  224.      fgets(t,80,fi);
  225.      fclose(fi);
  226.      i=atoi(t);
  227.      j=1;
  228.      while(j<=i)
  229.      {
  230.        sprintf(t,"%sdir%d",str,j);
  231.        if(!TLock(t))
  232.        {
  233.           printf("    Error! Can't locate %s\n",t);
  234.           end(0);
  235.        }
  236.        j++;
  237.      }
  238.      return(1);
  239.    }
  240.    return(0);
  241. }
  242. void CheckNeeded(char *str)
  243. {
  244.   char t[200];
  245.   sprintf(t,"%sUpload",str);
  246.   if(!TLock(t))
  247.   {
  248.     printf("    Error! Can't locate %s\n",t);
  249.     end(0);
  250.   }
  251.   sprintf(t,"%smsgbase",str);
  252.   if(!TLock(t))
  253.   {
  254.     printf("    Error! Can't locate %s\n",t);
  255.     end(0);
  256.   }
  257.   sprintf(t,"%slcfiles",str);
  258.   if(!TLock(t))
  259.   {
  260.     printf("    Error! Can't locate %s\n",t);
  261.     end(0);
  262.   }
  263.   sprintf(t,"%sPartUpload",str);
  264.   if(!TLock(t))
  265.   {
  266.     printf("    Error! Can't locate %s\n",t);
  267.     end(0);
  268.   }
  269. }
  270.  
  271. void CheckPaths(char *str)
  272. {
  273.   char t[200];
  274.   char Path[200];
  275.   FILE *fi;
  276.   sprintf(Path,"%spaths",str);
  277.   if(!TLock(Path))
  278.   {
  279.     printf("    Error! Can't locate %s\n",Path);
  280.     end(0);
  281.   }
  282.   fi=fopen(Path,"r");
  283.   if(fi==NULL)
  284.   {
  285.     printf("    Error! Can't open file %s\n",Path);
  286.     end(0);
  287.   }
  288.   while(fgets(t,80,fi)!=NULL)
  289.   {
  290.     sr(t);
  291.     if(t[strlen(t)-1]!='/' && t[strlen(t)-1]!=':')
  292.     {
  293.       printf("    Error!, Directory paths in the paths file must end with a '/' or ':'\n");
  294.       end(0);
  295.     }
  296.     if(strlen(t)>1 && t[strlen(t)-1]=='/')
  297.     {
  298.       t[strlen(t)-1]='\0';
  299.     }
  300.     
  301.     if(!TLock(t))
  302.     {
  303.        printf("    Error! Can't locate Paths directory %s\n",t);
  304.        fclose(fi);
  305.        end(0);
  306.     }
  307.   }
  308.   fclose(fi);
  309. }
  310. void CheckUlPaths(char *str)
  311. {
  312.   char t[200];
  313.   char Path[200];
  314.   FILE *fi;
  315.   sprintf(Path,"%sulpaths",str);
  316.   if(!TLock(Path))
  317.   {
  318.     return;
  319.   }
  320.   fi=fopen(Path,"r");
  321.   if(fi==NULL)
  322.   {
  323.     printf("    Error! Can't open file %s\n",Path);
  324.     end(0);
  325.   }
  326.   while(fgets(t,80,fi)!=NULL)
  327.   {
  328.     sr(t);
  329.   if(t[strlen(t)-1]!='/' && t[strlen(t)-1]!=':')
  330.     {
  331.       printf("    Error!, Directory paths in the Ulpaths file must end with a '/' or ':'\n");
  332.       end(0);
  333.     }
  334.  
  335.     if(strlen(t)>1 && t[strlen(t)-1]=='/')
  336.     {
  337.       t[strlen(t)-1]='\0';
  338.     }
  339.     if(!TLock(t))
  340.     {
  341.        printf("    Error! Can't locate Paths directory %s\n",t);
  342.        fclose(fi);
  343.        end(0);
  344.     }
  345.   }
  346.   fclose(fi);
  347. }
  348. void sr(char *str)
  349. {
  350.   register int i;
  351.   i=strlen(str)-1;
  352.   while(i>-1)
  353.   {
  354.     if(*(str+i)<=32) *(str+i)='\0'; else break;
  355.     i--; 
  356.   }
  357. }
  358.  
  359. int TLock(char *str)
  360. {
  361.   long lock;
  362.   if(lock=Lock(str,ACCESS_READ))
  363.   {
  364.     UnLock(lock); return(1);
  365.   }
  366.   return(0);
  367. }